
//A.25 helpfun.h 
    
   /****************************************************************** 
    
       iLBC Speech Coder ANSI-C Source Code 
    
       helpfun.h          
     
   Andersen et. al.  Experimental - Expires March 20th, 2003       120 
    
                     Internet Low Bit Rate Codec       September 2002 
    
    
       Copyright (c) 2001, 
       Global IP Sound AB. 
       All rights reserved. 
    
   ******************************************************************/ 
    
   #ifndef __iLBC_HELPFUN_H 
   #define __iLBC_HELPFUN_H 
    
   void autocorr(  
       float *r,       /* (o) autocorrelation vector */ 
       const float *x, /* (i) data vector */ 
       int N,          /* (i) length of data vector */ 
       int order       /* largest lag for calculated autocorrelations */ 
   ); 
    
   void window(  
       float *z,       /* (o) the windowed data */ 
       const float *x, /* (i) the original data vector */ 
       const float *y, /* (i) the window */ 
       int N           /* (i) length of all vectors */ 
   ); 
    
   void levdurb(  
       float *a,       /* (o) lpc coefficient vector starting  
                              with 1.0 */ 
       float *k,       /* (o) reflection coefficients */ 
       float *r,       /* (i) autocorrelation vector */ 
       int order       /* (i) order of lpc filter */ 
   ); 
    
   void interpolate(  
       float *out,     /* (o) the interpolated vector */ 
       float *in1,     /* (i) the first vector for the interpolation */ 
       float *in2,     /* (i) the second vector for the interpolation */ 
       float coef,     /* (i) interpolation weights */ 
       int length      /* (i) length of all vectors */ 
   ); 
               
   void bwexpand(  
       float *out,     /* (o) the bandwidth expanded lpc coefficients */ 
       float *in,      /* (i) the lpc coefficients before bandwidth  
                              expansion */ 
       float coef,     /* (i) the bandwidth expansion factor */ 
       int length      /* (i) the length of lpc coefficient vectors */ 
   ); 
    
   void vq(  
       float *Xq,      /* (o) the quantized vector */ 
       int *index,     /* (o) the quantization index */ 
       const float *CB,/* (i) the vector quantization codebook */ 
       float *X,       /* (i) the vector to quantize */ 
     
       int n_cb,       /* (i) the number of vectors in the codebook */ 
       int dim         /* (i) the dimension of all vectors */ 
   );   
    
   void SplitVQ(  
       float *qX,      /* (o) the quantized vector */ 
       int *index,     /* (o) a vector of indexes for all vector 
                              codebooks in the split */ 
       float *X,       /* (i) the vector to quantize */ 
       const float *CB,/* (i) the quantizer codebook */ 
       int nsplit,     /* the number of vector splits */ 
       const int *dim, /* the dimension of X and qX */ 
       const int *cbsize /* the number of vectors in the codebook */ 
   ); 
    
    
   void sort_sq(  
       float *xq,      /* (o) the quantized value */ 
       int *index,     /* (o) the quantization index */ 
       float x,    /* (i) the value to quantize */ 
       const float *cb,/* (i) the quantization codebook */ 
       int cb_size     /* (i) the size of the quantization codebook */ 
   ); 
    
   int LSF_check(      /* (o) 1 for stable lsf vectors and 0 for  
                              nonstable ones */ 
       float *lsf,     /* (i) a table of lsf vectors */ 
       int dim,    /* (i) the dimension of each lsf vector */ 
       int NoAn    /* (i) the number of lsf vectors in the table */ 
   ); 
    
   #endif 
    
    
